1. Field of the Invention
The present invention relates to the exchange of electronically represented data between separate computers, or between subcomponents of one computer. More particularly, the invention concerns a communication system for exchanging data objects such as text, graphics, program segments, and the like according to a dictionary known in advance by both sending and receiving devices. After indexing the source data objects in the dictionary, the sending device transmits a message including dictionary index codes comprising encoded representations of objects found in the dictionary, along with non-dictionary data objects in unencoded form.
2. Description of the Related Art
Along with the rising capabilities of modern computers, there is a rising tide of electronic information to store, process, send, and receive. Engineers are squarely meeting the challenge of higher data storage requirements with magnetic hard drives, tape drives, and other data storage devices with increasingly dense data storage. Processing capability is also escalating, as exemplified by semiconductor companies' frequent releases of increasingly powerful microprocessors.
Although advances have been made, data exchange speed still remains a bottleneck in many cases. Despite having purchased a speedy processor and large-capacity storage drive, for example, a computer user might still be frustrated with 28.8 Kbps communication with another computer over a telephone line. In another example, a computer user with access to an enterprise internet ("Intranet") may experience slow downloading due to network loading by other computer users. Accordingly, communications between two computers ("inter-computer" communications) can be one source of communications related frustration. Another communication related delay concerns the electronic data exchange between components of one computing device ("intra-computer" communications). For example, it may be time consuming to read data from a relatively slow storage device such as a floppy diskette drive, or for a processor to retrieve data from nonvolatile storage such as tape.
Data exchange delays, then, can be a problem in both inter-computer and intra-computer communications. The source of this problem may be the limitations of the communication link itself, such as the maximum baud rate of a telephone line. In other cases, communications may be slowed by an interface to a communications link, such as a modem, input/output ("I/O") channel, bus, etc. In the intra-computer context, the source of data delays may be the data storage medium.
One approach to expedite intra-computer communications is to store frequently used data and program segments in a fast-access storage cache. Caching recognizes that the exchange of data and program segments is frequently "redundant" because the same items are sent and received over and over again. Thus, instead of repeatedly retrieving the same items from one relatively slow storage, these items are stored in a fast-access cache. Although caching is beneficial for many applications, caching has several limitations. First, there is a startup time penalty users pay to initially stage data from storage into the cache. Moreover, this startup penalty is enhanced when the link between the cache and storage is noisy, busy, or otherwise slow.
Also in the intra-computer environment, a different approach to speed electronic communications is to compress the transmitted data and therefore decrease its transmission time. The Lempel-Ziv technique is one popular encoding algorithm, which uses "dynamic encoding." The Lempel-Ziv approach searches data for repeating strings and represents each string as an entry in a compression dictionary. Each dictionary is therefore unique to a particular data set. The Lempel-Ziv technique is especially useful in some contexts, such as pre-storage data compression in order to save valuable storage space. And, because the compressed data may be transmitted to the storage medium more quickly, this technique has the incidental benefit of reducing the time required to send the data to storage. Nonetheless, this technique is not well suited to the overall purpose of expediting communications, for several reasons. First, although compressed data sets can be transmitted more quickly than their uncompressed counterparts, the compression process demands a considerable processing time and resources, thereby increasing the overall data exchange time. Additionally, communications are further retarded because an entire compression dictionary must be transmitted to the receiving site for it to properly interpret the compressed data.
Consequently, due to certain unsolved problems such as those described above, known electronic communication systems are not completely adequate for some applications.